#include<stdlib.h>
#include<stdio.h>
#include "Grafo.h"
#include "No.h"

int main(int argc, char** argv) //primeiro argumento o nome do arquivo de entrada
{
    FILE *arq;
    int i,j;
    int numLinhas;
    int numero;
    int numeroNos;
    No **linha, *no;
    No ***linhas;

    arq = fopen(argv[1], "r");
    if(arq == 0)
    {
        printf("Arquivo nao encontrado\n");
        return 1;
    }

    //leitura do arquivo
    fscanf(arq, "%d", &numLinhas); //numero de linhas no arquivo
    fscanf(arq, "%d", &numero); //peso do no root
    Grafo *grafo = new Grafo(numero); //cria no root do grafo

    linhas = new No**[numLinhas];

    for(i=1; i< numLinhas; i++) //para cada linha
    {
        numeroNos=i+1;
        linha = new No*[numeroNos];
        for(j=0; j< numeroNos; j++) //para cada numero na linha
        {
            fscanf(arq,"%d", &numero);
            no = new No(numero);
            if(i == numLinhas-1) //se e a ultima linha, seta no como no folha
            {
                no->setFolha(true);
            }
            linha[j] = no;
            //printf("%d_", numero);
        }
        //adiciona linha ao grafo
        grafo->addNovaLinha(linha);
        linhas[i-1] = linha;
        //printf("\n");
    }
    printf("\nResultado final: %d\n", grafo->getSoma());

    for(i=0; i< numLinhas-1; i++)
    {
        linha = linhas[i];
        for(j=0; j< i+2; j++)
        {
            no = linha[j];
            delete no;
        }
        delete[] linha;
    }

    delete grafo;

    return 0;
}
